package com.zoro.interviewee.statictest;

/**
 * @author zhaoxingwu
 */
public class StaticMethodAndFieldTest {

    private String fieldOne = "fieldOne";
    private static String FIELD_ONE = "fieldOne";

    public static void main(String[] args) {
        methodOne();
        new StaticMethodAndFieldTest().methodTwo();
    }

    /**
     * 2. 静态方法中是不能使用非静态方法或属性的，但是实例方法中可以使用静态的方法和属性
     */
    public static void methodOne() {
        System.out.println("Static : "+ FIELD_ONE);
        // System.out.println("Static : "+ FIELD_ONE + "::" + fieldOne);
        // methodTwo();
    }

    public void methodTwo() {
        // methodOne 前面没有写类名，因为这是在同一个类里的代码，否则应该前面加类名调用
        methodOne();
        StaticChild.methodOne();
        System.out.println("methodTwo ==> static field : "+ FIELD_ONE + ", instance field : " + this.fieldOne);
    }
}

class StaticChild extends StaticMethodAndFieldTest {

    /**
     * 1. 是不可以Override的 ，因为静态方法是这个类的方法，而不是这个类的具体对象的方法
     */
    //@Override
    public static void methodOne() {
        System.out.println("Static Child");
    }
}
